#include "queue.h"

void init (Queue * suite){
    suite->first = NULL;
    suite->last = NULL;
    suite->size = 0;
}

/* enfiler (ajouter) un élément dans la file */
int enqueue (Queue * suite, Element * courant, BinaryTree *donnee){
    Element *nouveau_element;
    if ((nouveau_element = (Element *) malloc (sizeof (Element))) == NULL)
        return -1;
    
    nouveau_element -> data = donnee;
    
    
    if(courant == NULL){
        if(suite->size == 0)
            suite->last = nouveau_element;
        nouveau_element->next = suite->first;
        suite->first = nouveau_element;
    }else {
        if(courant->next == NULL)
            suite->last = nouveau_element;
        if(suite->size == 0)
            suite->first = nouveau_element;
        nouveau_element->next = courant->next;
        courant->next = nouveau_element;
    }
    suite->size++;
    return 0;
}

/* de_filer (supprimer) un élément de la file */
BinaryTree* dequeue (Queue * suite){
    Element *supp_element;
    if (suite->size == 0)
        return NULL;
    supp_element = suite->first;
    suite->first = suite->first->next;
    suite->size--;
    return supp_element -> data;
}
